home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 July & August / PCWorld_2006-07-08_cd.bin / komunikace / apache / apache_2[1].2.2-win32-x86-no_ssl.msi / Data1.cab / _3BB957715D44D3308AD3578694629E0F < prev    next >
Text File  |  2006-04-21  |  6KB  |  151 lines

  1. /* Copyright 1999-2005 The Apache Software Foundation or its licensors, as
  2.  * applicable.
  3.  *
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  *
  8.  *     http://www.apache.org/licenses/LICENSE-2.0
  9.  *
  10.  * Unless required by applicable law or agreed to in writing, software
  11.  * distributed under the License is distributed on an "AS IS" BASIS,
  12.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  * See the License for the specific language governing permissions and
  14.  * limitations under the License.
  15.  */
  16.  
  17. /**
  18.  * @file  http_connection.h
  19.  * @brief Apache connection library
  20.  *
  21.  * @defgroup APACHE_CORE_CONNECTION Connection Library
  22.  * @ingroup  APACHE_CORE
  23.  * @{
  24.  */
  25.  
  26. #ifndef APACHE_HTTP_CONNECTION_H
  27. #define APACHE_HTTP_CONNECTION_H
  28.  
  29. #include "apr_hooks.h"
  30. #include "apr_network_io.h"
  31. #include "apr_buckets.h"
  32.  
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36. /**
  37.  * @file  http_connection.h
  38.  * @brief Apache connection library
  39.  */
  40.  
  41. #ifdef CORE_PRIVATE
  42. /**
  43.  * This is the protocol module driver.  This calls all of the
  44.  * pre-connection and connection hooks for all protocol modules.
  45.  * @param c The connection on which the request is read
  46.  * @param csd The mechanism on which this connection is to be read.  
  47.  *            Most times this will be a socket, but it is up to the module
  48.  *            that accepts the request to determine the exact type.
  49.  */
  50. AP_CORE_DECLARE(void) ap_process_connection(conn_rec *c, void *csd);
  51.  
  52. /**
  53.  * Flushes all remain data in the client send buffer
  54.  * @param c The connection to flush
  55.  */
  56. AP_CORE_DECLARE(void) ap_flush_conn(conn_rec *c);
  57.  
  58. /**
  59.  * This function is responsible for the following cases:
  60.  * <pre>
  61.  * we now proceed to read from the client until we get EOF, or until
  62.  * MAX_SECS_TO_LINGER has passed.  the reasons for doing this are
  63.  * documented in a draft:
  64.  *
  65.  * http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt
  66.  *
  67.  * in a nutshell -- if we don't make this effort we risk causing
  68.  * TCP RST packets to be sent which can tear down a connection before
  69.  * all the response data has been sent to the client.
  70.  * </pre>
  71.  * @param c The connection we are closing
  72.  */
  73. AP_DECLARE(void) ap_lingering_close(conn_rec *c);
  74. #endif
  75.  
  76.   /* Hooks */
  77. /**
  78.  * create_connection is a RUN_FIRST hook which allows modules to create 
  79.  * connections. In general, you should not install filters with the 
  80.  * create_connection hook. If you require vhost configuration information 
  81.  * to make filter installation decisions, you must use the pre_connection
  82.  * or install_network_transport hook. This hook should close the connection
  83.  * if it encounters a fatal error condition.
  84.  *
  85.  * @param p The pool from which to allocate the connection record
  86.  * @param server The server record to create the connection too. 
  87.  * @param csd The socket that has been accepted
  88.  * @param conn_id A unique identifier for this connection.  The ID only
  89.  *                needs to be unique at that time, not forever.
  90.  * @param sbh A handle to scoreboard information for this connection.
  91.  * @param alloc The bucket allocator to use for all bucket/brigade creations
  92.  * @return An allocated connection record or NULL.
  93.  */
  94. AP_DECLARE_HOOK(conn_rec *, create_connection,
  95.                 (apr_pool_t *p, server_rec *server, apr_socket_t *csd,
  96.                  long conn_id, void *sbh, apr_bucket_alloc_t *alloc))
  97.    
  98. /**
  99.  * This hook gives protocol modules an opportunity to set everything up
  100.  * before calling the protocol handler.  All pre-connection hooks are
  101.  * run until one returns something other than ok or decline
  102.  * @param c The connection on which the request has been received.
  103.  * @param csd The mechanism on which this connection is to be read.  
  104.  *            Most times this will be a socket, but it is up to the module
  105.  *            that accepts the request to determine the exact type.
  106.  * @return OK or DECLINED
  107.  */
  108. AP_DECLARE_HOOK(int,pre_connection,(conn_rec *c, void *csd))
  109.  
  110. /**
  111.  * This hook implements different protocols.  After a connection has been
  112.  * established, the protocol module must read and serve the request.  This
  113.  * function does that for each protocol module.  The first protocol module
  114.  * to handle the request is the last module run.
  115.  * @param c The connection on which the request has been received.
  116.  * @return OK or DECLINED
  117.  */
  118. AP_DECLARE_HOOK(int,process_connection,(conn_rec *c))
  119.  
  120. /** End Of Connection (EOC) bucket */
  121. AP_DECLARE_DATA extern const apr_bucket_type_t ap_bucket_type_eoc;
  122.  
  123. /**
  124.  * Determine if a bucket is an End Of Connection (EOC) bucket
  125.  * @param e The bucket to inspect
  126.  * @return true or false
  127.  */
  128. #define AP_BUCKET_IS_EOC(e)         (e->type == &ap_bucket_type_eoc)
  129.  
  130. /**
  131.  * Make the bucket passed in an End Of Connection (EOC) bucket
  132.  * @param b The bucket to make into an EOC bucket
  133.  * @return The new bucket, or NULL if allocation failed
  134.  */
  135. AP_DECLARE(apr_bucket *) ap_bucket_eoc_make(apr_bucket *b);
  136.  
  137. /**
  138.  * Create a bucket referring to an End Of Connection (EOC). This indicates
  139.  * that the connection will be closed.
  140.  * @param list The freelist from which this bucket should be allocated
  141.  * @return The new bucket, or NULL if allocation failed
  142.  */
  143. AP_DECLARE(apr_bucket *) ap_bucket_eoc_create(apr_bucket_alloc_t *list);
  144.  
  145. #ifdef __cplusplus
  146. }
  147. #endif
  148.  
  149. #endif    /* !APACHE_HTTP_REQUEST_H */
  150. /** @} */
  151.